001 /*
002 * Copyright 2005 Stephen J. McConnell.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
013 * implied.
014 *
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019 package net.dpml.state;
020
021 import java.io.Serializable;
022
023 /**
024 * Default implementation of trigger.
025 *
026 * @author <a href="http://www.dpml.net">Digital Product Meta Library</a>
027 * @version 1.0.1
028 */
029 public class DefaultTrigger implements Trigger, Serializable
030 {
031 private final TriggerEvent m_event;
032 private final Action m_action;
033
034 /**
035 * Creation of a new trigger.
036 * @param event the trigger event constant
037 * @param action the action fired by the trigger
038 */
039 public DefaultTrigger( final TriggerEvent event, final Action action )
040 {
041 if( null == event )
042 {
043 throw new NullPointerException( "event" );
044 }
045 if( null == action )
046 {
047 throw new NullPointerException( "action" );
048 }
049 m_event = event;
050 m_action = action;
051 }
052
053 /**
054 * Return the event enumneration that this trigger is associated with.
055 * @return the triggering event class
056 */
057 public TriggerEvent getEvent()
058 {
059 return m_event;
060 }
061
062 /**
063 * Return the actions that this trigger initiates.
064 * @return the triggered action
065 */
066 public Action getAction()
067 {
068 return m_action;
069 }
070
071 /**
072 * Compare this object to another for equality.
073 * @param other the other object
074 * @return true if the object is equal to this object
075 */
076 public boolean equals( Object other )
077 {
078 if( null == other )
079 {
080 return false;
081 }
082 else if( other instanceof DefaultTrigger )
083 {
084 DefaultTrigger trigger = (DefaultTrigger) other;
085 if( !m_event.equals( trigger.getEvent() ) )
086 {
087 return false;
088 }
089 else
090 {
091 return m_action.equals( trigger.getAction() );
092 }
093 }
094 else
095 {
096 return false;
097 }
098 }
099
100 /**
101 * Compute the hashcode for this instance.
102 * @return the hashcode value
103 */
104 public int hashCode()
105 {
106 int hash = m_event.hashCode();
107 hash ^= m_action.hashCode();
108 return hash;
109 }
110
111 /**
112 * Return a string representation of the instance.
113 * @return the string value
114 */
115 public String toString()
116 {
117 return "trigger:" + m_event.getName();
118 }
119 }